﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Data;
using System.Globalization;

namespace SoftHotel.Models
{
    public class InvitadoDAO
    {
        private Conexion conexionBD = new Conexion();
        private ParametroDAO dbPar = new ParametroDAO();

        public List<Invitado> ejecutar_query(Int32 id)
        {

            string consulta = "";
            conexionBD.AbrirConexion();
            List<Invitado> listaInvitados= new List<Invitado>();

            consulta = "select IDINVITADO, idReserva, NOMBRE, APELLIDOPATERNO, APELLIDOMATERNO, TIPODOC, NUMDOC from INVITADO where IDReserva=" + id;

            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);

            while (dataReader != null && dataReader.Read())
            {
                Invitado inv = new Invitado();
                inv.idInvitado = dataReader.GetInt32(0);
                inv.idReserva = dataReader.GetInt32(1);
                inv.nombre = dataReader[2].ToString();
                inv.apePaterno = dataReader[3].ToString();
                inv.aperMaterno = dataReader[4].ToString();
                if (!dataReader.IsDBNull(5))  inv.tipoDocumento = dataReader.GetInt32(5);
                inv.numeroDocumento = dataReader[6].ToString();
                inv.tipoDoc = dbPar.parametros.Where(u => u.idParametro == inv.tipoDocumento).First().valor;


                listaInvitados.Add(inv);
            }
            conexionBD.CerrarConexion();
            return listaInvitados;
        }
        
        
        
        
        public void add_invitado(Invitado inv)
        {
            
           

            string consulta = "";
            conexionBD.AbrirConexion();

            consulta = "INSERT INTO INVITADO (IDRESERVA, NOMBRE, APELLIDOPATERNO, APELLIDOMATERNO, TIPODOC, NUMDOC )" +
                        "VALUES (@idreserva, @nombre, @apepat, @apemat, @tdoc, @ndoc)";

            SqlCommand command = conexionBD.connection.CreateCommand();
            command.CommandText = consulta;

            /*int cat = buscarSede(ambiente.sede);
            int est = buscarTipoDeAmbiente(ambiente.tipoAmbiente);*/

            command.Parameters.Add("@idreserva", SqlDbType.Int).Value = inv.idReserva;
            command.Parameters.Add("@nombre", SqlDbType.Char, 50).Value = inv.nombre;
            command.Parameters.Add("@apepat", SqlDbType.Char, 50).Value = inv.apePaterno;
            command.Parameters.Add("@apemat", SqlDbType.Char, 50).Value = inv.aperMaterno;
            command.Parameters.Add("@ndoc", SqlDbType.Char, 20).Value = inv.numeroDocumento;

            command.Parameters.Add("@tdoc", SqlDbType.Int).Value = inv.tipoDocumento;


            conexionBD.EjecutarComando2(command);



        }


     

        public void editar_invitado(Int32 id, Invitado inv)
        {
            string update = "";
            conexionBD.AbrirConexion();


            update = "UPDATE INVITADO SET nombre= @nom, apellidopaterno = @apepat, apellidomaterno= @apemat, tipodoc = @tdoc, numdoc = @ndoc " +
                        " WHERE IDINVITADO = @id";

            SqlCommand command = conexionBD.connection.CreateCommand();
            command.CommandText = update;

            /*int cat = buscarSede(ambiente.sede);
            int est = buscarTipoDeAmbiente(ambiente.tipoAmbiente);*/
            command.Parameters.Add("@nom", SqlDbType.Char, 50).Value = inv.nombre;
            command.Parameters.Add("@apepat", SqlDbType.Char, 50).Value = inv.apePaterno;
            command.Parameters.Add("@apemat", SqlDbType.Char, 50).Value = inv.aperMaterno;
            command.Parameters.Add("@ndoc", SqlDbType.Char, 20).Value = inv.numeroDocumento;

            command.Parameters.Add("@tdoc", SqlDbType.Int).Value = inv.tipoDocumento;

            command.Parameters.Add("@id", SqlDbType.Int).Value = id;

            conexionBD.EjecutarComando2(command);
        }




        public Invitado consultar_invitado(Int32 id)
        {
            string consulta = "";
            conexionBD.AbrirConexion();
            Invitado inv = new Invitado();

            consulta = "select IDINVITADO, idReserva, NOMBRE, APELLIDOPATERNO, APELLIDOMATERNO, TIPODOC, NUMDOC from INVITADO where IDINVITADO=" + id;

            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);

            dataReader.Read();
            
               
                inv.idInvitado = dataReader.GetInt32(0);
                inv.idReserva = dataReader.GetInt32(1);
                inv.nombre = dataReader[2].ToString();
                inv.apePaterno = dataReader[3].ToString();
                inv.aperMaterno = dataReader[4].ToString();
                if (!dataReader.IsDBNull(5))  inv.tipoDocumento = dataReader.GetInt32(5);
                inv.numeroDocumento = dataReader[6].ToString();
                inv.tipoDoc = dbPar.parametros.Where(u => u.idParametro == inv.tipoDocumento).First().valor;
              
            
            conexionBD.CerrarConexion();
            return inv;
        }


        

        public void eliminar_invitado(int id, Invitado inv)
        {
            string delete = "";
            conexionBD.AbrirConexion();
            delete = "DELETE FROM INVITADO WHERE IDINVITADO = @id";
            SqlCommand command = conexionBD.connection.CreateCommand();
            command.CommandText = delete;
            command.Parameters.Add("@id", SqlDbType.Int).Value = id;
            conexionBD.EjecutarComando2(command);

        }

    }
}